const User = require('../model/user.model')

class UserService {
  async createUser(user_name, password, is_admin) {
    // todo: 写入数据库
    const res = await User.create({ user_name, password, is_admin })

    //处理成功的时候返回 接口请求者
    return res.dataValues
  }

  async getUserInfo({ id, user_name, password, is_admin }) {
    const whereOpt = {}

    //属性存在时执行 拷贝 （获取数据库数据）
    id && Object.assign(whereOpt, { id })
    user_name && Object.assign(whereOpt, { user_name })
    password && Object.assign(whereOpt, { password })
    is_admin && Object.assign(whereOpt, { is_admin })

    const res = await User.findOne({
      attributes: ['id', 'user_name', 'password', 'is_admin'],
      where: whereOpt,
    })
    return res ? res.dataValues : null
  }

  async updateUserInfoById({ id, user_name, password, is_admin }) {
    const whereOpt = { id }
    const newUserInfo = {}

    user_name && Object.assign(newUserInfo, { user_name })
    password && Object.assign(newUserInfo, { password })
    is_admin && Object.assign(newUserInfo, { is_admin })
    const res = await User.update(newUserInfo, {
      where: whereOpt,
    })
    //res[0] > 0  成功
    return res[0] > 0 ? true : false
  }

}

module.exports = new UserService()